
% This work is licensed under the Creative Commons Attribution-Share Alike 2.0 France License.
% To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/fr/legalcode
% or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.


\mainmatter
\clearemptydoublepage
\chapter{Tous les serpents ne vont pas vous mor\-dre}
\section{Bonjour, je suis votre livre}
Il est possible que vous\footnote{Mon traducteur a fait le choix de traduire « you » par vous, le vouvoiement lui semble plus adapté que le tutoiement généralisé dans certains livres pour enfants.} ayez reçu ce livre pour votre anniversaire. Tante Marie était à deux doigts de vous donner un pull affreux qui aurait été deux fois trop grand (et que vous n'auriez pas porté plus âgé de toute manière). Finalement, elle a entendu quelqu'un parler de ce livre à imprimer, s'est rappelée que vous aviez un de ces ordinateurs-machin-chose, que vous aviez essayé de lui montrer comment l'utiliser au dernier Noël (vous aviez d'ailleurs abandonné quand elle avait commencé à parler à la souris), et l'a fait imprimer.
\\


\emph{Soyez juste soulagé de ne pas avoir eu cet horrible pull.\\}


J'espère ne pas vous avoir trop déçu quand vous m'avez découvert dans le papier recyclé d'emballage. Un livre qui ne parle pas vraiment (O.K., qui ne parle pas du tout), avec un titre de mauvaise augure qui parle d'« apprendre... ». Prenez un moment pour penser à ce que je ressens! Si vous étiez un personnage d'un roman qui parle de magiciens et que j'étais dans la bibliothèque de votre chambre, j'aurais probablement des dents... ou peut-être des yeux verts. Je pourrais contenir des images animées ou être capable de faire des hurlements de fantôme quand vous ouvririez mes pages. À la place, je suis imprimé sur des feuilles de papier A4 cornées, agrafées ensemble ou mises dans une chemise. Comment pourrais-je le savoir? Je n'ai pas d'yeux!\\


\emph{Je donnerais n'importe quoi pour une belle mâchoire pleine de dents aiguisées...}\\


Tout n'est pas aussi catastrophique qu'il y parait. Même si je ne peux pas parler... Ou mordre vos doigts quand vous ne regardez pas... Je peux, au moins, vous parler de ce qui fait fonctionner les ordinateurs. Pas la partie physique, avec les fils, les puces, les câbles et les éléments qui pourraient plus que probablement vous électrocuter aussitôt que vous les toucheriez (donc ne le faites pas!) mais la partie cachée qui court à l'intérieur de ces fils, ces puces, ces câbles et ces machins qui font que les ordinateurs sont vraiment utiles. 

\begin{center}
\includegraphics[scale=1]{images/electrocution.pdf} 
\end{center} 

C'est un petit peu comme les pensées qui tournent dans votre tête. Si vous ne pensiez jamais à rien, vous seriez probablement assis sur le sol de votre chambre, regardant vaguement vers la porte et bavant sur l'avant de votre t-shirt. Sans programme, les ordinateurs n'ont pas plus d'utilité que des cales-porte --- et encore ils sont plus emcombrents et vous devriez prendre garde à bien les enjamber pendant la nuit. Et il n'y a rien de pire que de se cogner un orteil dans l'obscurité.

\bigskip
\emph {Je suis juste un livre et même moi je sais ça.}

\bigskip
Votre famille a peut-être une Playstation, une Xbox ou une Wii qui trônent dans le salon. Elles ne seraient que d'une faible utilité sans programme (jeu) pour les faire fonctionner. Les lecteurs de DVD, certains réfrigérateurs et même la plupart des voitures, ont tous des programmes informatiques qui les rendent plus utiles qu'ils ne pourraient l'être autrement. Votre lecteur de DVD est programmé pour jouer des disques; votre réfrigérateur peut disposer d'un programme simple pour limiter sa consommation d'électricité, mais continuer de garder les aliments froids; certaines voitures sont équipées d'un ordinateur de bord pour avertir quand elles risquent d'avoir un accident.

Savoir écrire un programme informatique ouvre de nombreuses possibilités. Vous pouvez faire toutes sortes de choses utiles, comme programmer vos propres jeux ou créer des pages web qui peuvent réagir au lieu d'un bête machin coloré. Être capable de programmer pourra peut-être vous aider dans votre travail scolaire.
\\


Cela dit, passons maintenant à un sujet un peu plus intéressant.

\section{Qu'est ce que nous allons voir?}
Nous allons voir comment poser des questions et prendre en compte la réponse: par exemple demander à quelqu'un son nom et lui faire des remarques sur celui-ci.

Nous allons aussi voir comment faire faire des dessins comme sur la \autoref{fig:pythonimage}.

\begin{figure}[!ht]
\capstart
\centering
\subfigure[Le Yin et le Yang]{
\includegraphics[scale=0.6]{images/yinyang_bis}
\label{fig:yinyang_bis}
}
\subfigure[Étoile à neuf branches]{
\includegraphics[scale=0.5]{images/etoileorange3}
\label{fig:etoileorange3}
}
\caption{Des dessins faits avec Python}\label{fig:pythonimage}
\end{figure}

Nous verrons aussi comment afficher un message de bienvenue différent tous les jours.

\section{Quelques mots à propos des langages}
Comme les humains, certainement les baleines, possiblement les dauphins et peut-être même les parents (même si cela fait débat pour ces derniers), les ordinateurs ont leur propre langage. En fait, aussi comme les humains, ils ont plus d'un langage. A, B, C, D et E ne sont pas juste des lettres, ce sont aussi des langages de programmation (ce qui prouve que les adultes n'ont pas d'imagination et devraient lire soit un dictionnaire soit un répertoire avant de nommer quoique ce soit). Oh et si vous ajoutez quelques plus ou dièses (+, \#) après certaines de ces lettres que je viens de lister, il s'agit encore de langages de programmation qui sont presque les mêmes et n'en diffèrent que légèrement.

D'autres sont nommés d'après des personnes, en utilisant de simples acronymes (les premières lettres d'une série de mots), voir pour certains à partir d'une émission de télévision. 

\bigskip
\emph{Qu'est-ce que je vous avez dit? Pas d'imagination!}

\bigskip
Par chance, de nombreux langages sont tombés en désuétude ou ont disparu complètement; mais la liste des différentes manières de « parler » à un ordinateur reste vraiment ennuyeusement longue. Je vais seulement parler d'un de ceux-ci --- sinon nous ferions aussi bien de ne pas commencer.\\


Il serait alors plus productif de vous asseoir dans votre chambre et de baver sur le devant de votre t-shirt.

\section{L'ordre des serpents constricteurs non-venimeux...}
... ou pythons, pour faire plus court.

\bigskip
Le python est un serpent mais le Python est un langage de programmation. Néanmoins, son nom ne vient pas directement du reptile sans patte; il s'agit d'un de ces rares langages de programmations nommés d'après une émission de télévision. Le Monty Python's Flying Circus était une émission humoristique britannique populaire durant les années 1970 (et en fait, encore vraiment populaire actuellement) qui nécessite d'avoir un certain âge pour la trouver amusante. Toute personne en dessous de... disons douze ans... pourrait se demander d'où peut provenir tout ce battage\footnote{Mis à part « the fish slapping dance » ou danse tape-poisson qui est drôle quelque soit votre âge.}.

Il y a un certain nombre de choses à propos de Python (le langage de programmation, pas le serpent ou l'émission de télévision) qui le rende extrêmement pratique quand vous allez apprendre à programmer. Pour nous, en ce moment l'important est que vous puissiez commencer et faire des choses vraiment rapidement.

C'est maintenant la partie où vous espérez que Maman, Papa ou quiconque est en charge de l'ordinateur, a lu la partie au début de ce livre nommée « Une note aux parents... ».

\begin{WINDOWS}
\begin{figure}[!ht]
\capstart
\centering
\includegraphics[scale=0.6]{images/startmenu}
\caption{Python dans le menu de Windows.}\label{fig:startmenu}
\end{figure}
\end{WINDOWS}

Il y a une bonne manière de vérifier s'ils l'ont réellement lu: 
\begin{WINDOWS}
cliquez sur le bouton « démarrer » en bas à gauche de l'écran, cliquez sur « Programmes » (qui doit avoir un petit triangle à coté), et avec optimisme dans la liste des programmes vous devriez voir « Python 3.1 » (ou quelque chose approchant).\index{console}
 
La figure \ref{fig:startmenu} montre ce que vous devriez voir. Cliquez sur « Python (command line) » et vous devriez voir quelque chose comme sur la figure \ref{fig:pycl}.

\begin{figure}[!ht]
\centering
\includegraphics[scale=0.6]{images/pycl}
\caption{Ligne de commande Python sous Windows.}\label{fig:pycl}
\end{figure}

La ligne de commande Python fonctionne sous Windows à partir de la ligne de commande Windows et hérite de certaines limitations en particulier pour l'affichage de certains caractères (typiquement les caractères français comme « œ » ou  « \begin{small}\euro\end{small} » qui seront remplacés par des « \texttt{?} ») sans que cela ne pose de problème important.

\end{WINDOWS}

\begin{MAC}
In Finder, on the left you should see a group called `Applications'.  Click on this, and then find a program called `Terminal' (it'll probably be in a folder called `Utilities').
Click on `Terminal', and when it starts up, type python and hit enter.  You'll should hopefully be looking at a window that looks like Figure~\ref{fig3}.

\begin{figure}
\begin{center}
\includegraphics[width=85mm]{figure3.eps}
\end{center}
\caption{The Python console on Mac OSX.}\label{fig3}
\end{figure}
\end{MAC}

\begin{LINUX}
Demandez à vos parents quelle application de terminal vous devriez utiliser qui devrait s'appeler «\texttt{konsole}», «\texttt{rxvt}», «\texttt{xterm}» ou une douzaine d'autres programmes (c'est pourquoi vous aurez probablement besoin de de demander). Vous devriez aussi pouvoir lancer un terminal en utilisant le menu ``applications'' tel que présenté à la figure \ref{fig:menu-terminal}
\begin{figure}[!ht]
\capstart
\centering
\includegraphics[scale=0.6]{images/linux-menu-terminal}
\caption{Lancer un terminal depuis le menu applications.}\label{fig:menu-terminal}
\end{figure}

Lancez le terminal et tapez « \texttt{python3} » (sans les guillemets) et appuyez sur entrée. Vous devriez avoir un résultat similaire à la \autoref{fig:console}.
\begin{figure}
\begin{center}
\includegraphics[width=80mm]{images/linux-console-python3}
\end{center}
\caption{La console Python sous Linux.}\label{fig:console}
\end{figure}
\end{LINUX}

\begin{WINDOWS}
Cliquez sur « IDLE (Python GUI) » dans le menu des applications et vous devriez voir quelque chose comme sur la figure \ref{fig:shell}.

\begin{figure}[!ht]
\centering
\includegraphics[scale=0.6]{images/shell}
\caption{Shell Python.}\label{fig:shell}
\end{figure}
\end{WINDOWS}

\begin{LINUX}
Cliquez sur «IDLE» dans le menu applications/programmation et vous devriez 
voir quelque chose comme sur la figure \ref{fig:shell}.

\begin{figure}[!ht]
\centering
\includegraphics[scale=0.6]{images/linux-idle-shell}
\caption{Shell Python dans IDLE}\label{fig:shell}
\end{figure}
\end{LINUX}


Le shell\footnote{Le mot \emph{shell} signifie en anglais coquille, c'est le nom donné à l'interface d'un système d'exploration, c'est à dire la partie que manipule l'utilisateur pour utiliser un système d'exploitation. Par extension, ce nom est donné à certaines autres interfaces.} Python est plus puissant et plus convivial: en particulier il met en valeur en les coloriant les éléments clef des commandes qui sont passées ce qui limite le risque d'erreur.

\section*{Si vous découvrez qu'ils n'ont pas lu la section du début...}

... parce que s'il manque quelque chose quand vous essayez de suivre ces instructions --- alors retournez au début du livre et brandissez le sous leur nez alors qu'ils essayent de lire le journal, et soyez plein d'optimisme. Si vous avez du mal à les convaincre de s'extraire du canapé, dire: « s'il-vous-plait, s'il-vous-plait, s'il-vous-plait... » encore et encore jusqu'à ce que cela devienne ennuyant devrait vraiment bien fonctionner. Bien sûr, l'autre chose que vous pouvez faire est de retourner au début du livre et suivre les instructions de la préface pour installer Python vous même.

\section{Votre premier programme en Python}

Avec de la chance, si vous avez atteint ce point, vous avez réussi à démarrer la console Python, qui est un moyen de lancer des commandes Python et des programmes. Quand vous lancez la console (ou après avoir entré une commande), ce que vous voyez en premier est appelé une « invite de commande » (invite pour faire court ou « \emph{prompt} » en anglais). 
Dans la console Python, l'invite est matérialisée par trois chevrons, ou trois symboles plus-grand-que (\verb+>+) pointant vers la droite:
\begin{Verbatim*}[frame=single,rulecolor=\color{gray}, label=ne pas saisir]
>>>
\end{Verbatim*}
Si vous placez suffisamment de commandes Python ensembles, vous avez un programme que vous pouvez lancer même en dehors de la console... Mais pour le moment nous allons garder les choses simples et taper nos commandes directement dans la console, à l'invite (\verb+>>>+).
\VerbatimFootnotes
Ainsi pourquoi ne pas commencer à taper ce qui suit
\footnote{Le \verb*+ + dans les codes symbolise \emph{une} espace, c'est à dire le caractère issu de l'appui sur la barre d'espace. Quand cela est utile, ce symbole sera affiché.}:

\begin{Verbatim*}[frame=single,rulecolor=\color{mbleu}, label=à taper]
print("Bonjour le monde !")
\end{Verbatim*}

Note du traducteur: la plupart des langages de programmation utilisent des mots clefs en anglais. Python ne fait pas exception à la règle. Vous avez donc l'occasion d'apprendre quelques mots d'anglais en plus d'un langage de programmation. Le verbe « \emph{(to) print} » signifie en anglais « imprimer » ou « afficher » du moyen anglais \emph{prente} issu du participe passé \emph{preint, prient} du verbe \emph{priendre}, du latin \emph{premere} qui signifie presser. Par la suite les explications et traductions des mots anglais seront mises en note de bas de page.\\

Pour information les extraits de code sont mis en valeur dans des cadres colorés. 
Les cadres bleus contiennent des exemples que vous pouvez taper sans difficulté particulière:

\begin{Verbatim}[frame=single,rulecolor=\color{mbleu}, label=à taper]

\end{Verbatim}

Python est résistant: les erreurs que vous pourriez obtenir sont sans gravité, vous pouvez expérimenter sans peur.
Il vous sera même indiqué parfois des tests à réaliser pour le pousser à la faute. Python couinera un peu, mais ce n'est pas grave.


\begin{center}
\includegraphics[scale=0.5]{images/serpent}
\end{center}

Les cadres rouges contiennent des erreurs, si vous les tapez vous obtiendrez le message d'erreur indiqué:

\begin{Verbatim}[frame=single,rulecolor=\color{red}, label=erreur]

\end{Verbatim}

Les cadres verts contiennent des exemples valides mais avec des subtilités qui viennent d'être expliquées ou qui vont l'être prochainement, si vous les tapez en oubliant des espaces (symbolisée par \verb*+ +) vous pouvez obtenir des messages d'erreur:

\begin{Verbatim*}[frame=single,rulecolor=\color{green}, label=à taper avec attention]
 
\end{Verbatim*}
Les cadres gris contiennent des exemples qui ne sont pas à taper:

\begin{Verbatim}[frame=single,rulecolor=\color{gray}, label=ne pas saisir]
 
\end{Verbatim}


Assurez-vous d'inclure les guillemets (ceux qui sont comme cela \texttt{" "}), et d'appuyer sur entrée à la fin de la ligne.
Normalement vous devriez avoir quelque chose comme:

\begin{Verbatim*}[frame=single,rulecolor=\color{mbleu}, label=à taper si cela n'est pas déjà fait]
>>> print("Bonjour le monde !")
Bonjour le monde
\end{Verbatim*}


L'invite réapparaît pour vous faire savoir que la console Python est prête à accepter plus de commandes.
\\


Félicitations! Vous venez juste de créer votre premier programme en Python. La commande \index{print}« \verb+print+ » est une fonction qui écrit tout ce qui est entre les parenthèses sur la sortie de la console, nous la verrons plus en détail ultérieurement.

\section{Votre second programme Python... Le même à nouveau?}

Les programmes Python ne seraient pas très utiles si vous aviez à taper les commandes chaque fois que vous voulez faire quelque chose, ou si vous écriviez un programme pour quel\-qu'un et qu'il avait à le taper avant qu'il ne puisse l'utiliser.

Le traitement de texte, que vous pouvez utiliser pour faire des dossiers pour l'école, est probablement constitué de dix à cent millions de lignes de code. Selon le nombre de lignes imprimées sur une page et même si vous imprimez sur les deux faces, cela représente quatre cents mille pages imprimées, ou une pile de quarante mètres de haut. Imaginez-vous juste quand vous ramenez un tel logiciel à la maison depuis le magasin, il faudrait plus que quelques voyages pour ramener autant de papier. Et vous feriez mieux d'espérer qu'il n'y ait pas une rafale de vent quand vous ramenez les piles de papier.

\begin{center}
\includegraphics[scale=1]{images/encore.pdf} 
\end{center} 

Heureusement il y a une alternative à toute ces saisies de texte\footnote{On parle aussi de dactylographie, écriture avec les doigts.} ou rien ne serait jamais fini.
Ouvrez le « Bloc-notes » (cliquez sur « Démarrer », « Programmes » et vous devriez le trouver dans le sous menu « Accessoires ») et tapez la commande exactement comme vous l'aviez tapée dans la console auparavant:

\begin{Verbatim}[frame=single,rulecolor=\color{gray}, label=ne pas saisir]
print("Bonjour le monde !")
\end{Verbatim}
\rm

Cliquez sur le menu « Fichier » (dans le Bloc-notes) puis sur « Enregistrer », il vous sera alors demandé de choisir un nom de fichier, entrez « \texttt{bonjour.py} » et sauvez le fichier sur le Bureau. Pour ce faire cliquez sur l'icône « \texttt{Bureau} », changez le type de « \texttt{Fichiers texte (*.txt) en « \texttt{Tous les fichiers} » } », puis changer le « \texttt{*.txt} » en « \texttt{bonjour.py} ». Double cliquez sur l'icône bonjour.py sur votre bureau (voir figure \ref{fig:bureau} et pendant un bref instant une fenêtre noire va apparaître.

\begin{figure}[!ht]
\centering
\includegraphics[scale=0.6]{images/bureau}
\caption{Programme Python sur le bureau.}\label{fig:bureau}
\end{figure}

Elle va disparaître trop rapidement pour que vous puissiez la lire mais « Bonjour le monde ! » est apparu dans la fenêtre une fraction de seconde; nous y reviendrons plus tard et nous montrerons que le texte s'y est bien imprimé.

Ainsi, nous venons de voir que les sympathiques personnes qui ont créé Python, nous ont gentiment prémuni d'avoir à taper la même chose encore et encore et encore et encore... Comme le faisait certains dans les années 1980. Non, je suis sérieux, certains l'ont fait. Allez demander à votre maman ou votre papa s'ils n'ont pas possédé un MO5 ou un Amstrad CPC\footnote{Ces ordinateurs étaient populaires dans les années 1980 dans les pays francophones.} quand ils étaient plus jeunes. S'ils en ont eu un vous pouvez les montrer du doigt et rigoler.\\


Croyez moi sur ce point, vous ne comprendrez peut-être pas mais, eux, ils comprendront.\\

\emph{Soyez néanmoins prêts à courir.}\\


Mon cousin, le livre en version anglaise, parle de ZX81\footnote{Le Sinclair ZX81, vendu dans les années 1980 a été un des premiers ordinateurs vraiment abordable. Un grand nombre de jeunes garçons et de jeunes filles ont été complètement passionnés et tapaient les codes de jeux imprimés dans des magazines populaires consacrés au ZX81 pour découvrir après des heures de dactylographie que ces saletés ne fonctionnaient jamais correctement.} un ordinateur qui a été très populaire dans les pays anglo-saxons.


\section*{La fin du début}

Bienvenue dans le monde merveilleux de la programmation. Nous avons commencé vraiment simplement avec une 
application « Bonjour le monde »\footnote{« Hello world » en anglais}. tout le monde commence avec cela quand on apprend à programmer. Dans le prochain chapitre nous commencerons à faire des choses plus utiles avec la console Python et alors nous regarderons comment faire un programme.

 \vfill
\begin{center}
 \includegraphics[width=5cm]{images/python.pdf}
\end{center}
 \vfill

\newpage
\thispagestyle{empty}
\AddToShipoutPicture*{
 \put(0,0){
 \parbox[b][\paperheight]{\paperwidth}{
 \vfill
\begin{center}
 \includegraphics[width=5cm]{images/python_det.pdf}
\end{center}
 \vfill
 }}}
